iT邦幫忙

2024 iThome 鐵人賽

0
AI/ ML & Data

從「這次不會壞吧」到自動化的未來:從 DevOps 到 MLOps,改造模型佈署之旅系列 第 14

從「這次不會壞吧」到自動化的未來:14 以 HPE MLDM 實作 MLOps 資料版本控制 - 2

  • 分享至 

  • xImage
  •  

上傳資料到 Repository

先執行以下指令來將範例檔案 0050.csv 上傳到 Repository:

(mldm) aif@aif % pachctl create branch raw@v1 --head master                   
(mldm) aif@aif % pachctl put file raw@v1:0050.csv -f ./data/0050.csv           
data/0050.csv 153.73 KB / 153.73 KB [==============================================================] 0s 0.00 b/s
(mldm) aif@aif % pachctl create branch raw@master --head v1                  
(mldm) aif@aif % pachctl create branch raw@v2 --head master
(mldm) aif@aif % pachctl put file raw@v2:0050.csv -f ./data/0050_new.csv
data/0050_new.csv 154.90 KB / 154.90 KB [==============================================================] 0s 0.00 b/s
(mldm) aif@aif % pachctl create branch raw@master --head v2

回到 MLDM console UI,進入 raw Repository,點選「Commits」,進到這個 Repository 的 Commit 紀錄,會看到目前已經有 3 筆 Commit,分別是創建 Repository,上傳第一及第二版的 料,並且第二版的資料的 Branch 顯示為 v2,且檔案大小和 v1 的有些微差異。

https://ithelp.ithome.com.tw/upload/images/20241021/20169475s4pMh9iXCD.png
:Commits 清單。

如果想調閱更多資訊,在每個 Commit 按下最右邊的「⋯」,點選「Inspect commit」,就能看到這個 Commit 更詳細的資訊。如下圖,這是 Commit 335c46ceae98476690789e473c7ab22a 的資訊,中央的欄位是檔案的更動狀況,右側主要是建立時間以及來源 Commit 的資訊。

https://ithelp.ithome.com.tw/upload/images/20241021/20169475tUEOKcvKJJ.png
:Commits 的詳細資訊,包含差異狀態以及檔案大小。

自動執行前處理

MLDM 的另一個亮點功能,就是它能在其輸入 Repository 的內容有差異時,自動執行前處理任務。舉例來說,當我們更新原始資料,MLDM 就會自動啟動 Pipeline,使前處理工作更自動化。因此製作好新版本的資料後,只需將 master 分支的 HEAD(就是指向目前所在位置的指標)移動到新版本的分支位置,Pipeline 就會自動啟動。

現在就來實際操作一次,MLDM 同樣使用 pachctl create branch 指令來建立或合併分支,例如我們想將 raw Repository 更新到 v2 版本並執行前處理(Pipeline 只監控 master 分支,所以要執行 Pipeline 都需要合併回 master),只需執行以下指令就可完成:

(mldm) aif@aif % pachctl create branch raw@master --head v2

接著馬上回到 MLDM console UI,會發現 preprocess Pipeline 的狀態轉為 Created,代表 MLDM 正在建立容器,過了數秒後再轉為 Running,執行前處理程式。在使用上要留意,由於 Pipeline 執行前 MLDM 需要先建立容器,如果容器的映像檔較複雜,MLDM 可能需要較多時間建立。

https://ithelp.ithome.com.tw/upload/images/20241021/20169475SL1zHkTOAa.png
:MLDM console UI 的 DAG 頁面,可以想像成整個專案架構的流程圖。

還原到不同版本的資料

對於將資料還原到不同版本的需求,MLDM 提供完整的版控功能。在 Repository,資料的差異都能以 Commit 的形式追蹤,這點與大家常用的 Git 一樣,並且這些 Commmit 可以用分支(Branch)來管理,因此如果已經熟悉 Git 的操作,就能快速上手。

在上一個步驟我們已經製作出 v1 以及最新的 v2 版本,現在我們將資料還原到 v1,也就是將 master 分支的 HEAD 指向 v1:

(mldm) aif@aif % pachctl create branch raw@master --head v1

因為我們更改 master 分支的 HEAD,使 raw Repository 的內容有差異,因此會觸發 preprocess Pipeline,其狀態再次轉為 Created,隨即轉為 Running。完成後 preprocess Repository(這裡是存放 preprocess Pipeline 處理後的資料),會出現新的 Commit,且檔案大小與初次執行 v1 版本時相符,如下圖。

https://ithelp.ithome.com.tw/upload/images/20241021/20169475581u7NLw73.png
:執行幾次資料更動後,Commits 的紀錄。

從 Repository 下載資料

在訓練或部署階段時,或多或少都有從 Repository 下載資料的需求,MLDM 當然也提供了簡便的方式下載 Repository 上的資料。假如我們需要從preprocess Repository 下載處理後的資料,執行以下指令即可將資料存放在本地端我們指定的路徑:

(mldm) aif@aif % pachctl get file preprocess@master:/0050.csv_processed.csv --output 0050.csv_processed.csv

當然,使用者也可以透過 MLDM console UI,從圖形化介面下載,即便是不熟悉指令列操作的使用者也能隨時存取資料。

結論

在這兩天的文章我們使用 HPE MLDM 來管理結構化資料,包含資料上傳、更新。版控功能的使用邏輯與 Git 類似,的確可以快速上手,雖然目前還無法在圖形界面上進行分支管理,僅能透過指令,但幾個常用指令打幾次之後就能記起來,不會有太大問題。

另外,MLDM 提供 Jupyter Lab 外掛,使用 Jupyter 進行實驗時就能輕鬆切換不同版本資料。最後,MLDM 還有一項強大功能,就是與自家的 MLDE 組合,達到資料版控、前處理與模型超參數調整的自動化,意味著我們甚至可以將資料的前處理到推論,完全自動化,只要 Repository 裡面的資料有更新,便觸發 Pipeline 自動執行前處理,再輸出模型的預測結果,而每個團隊成員隨時都能透過 MLDM console UI 監控整個系統。

接下來,在下一篇文章我們將帶大家結合 MLDM 與 MLDE 來實作卷積神經網路模型(Convolutional Neural Network)訓練,且從資料前處理到模型訓練,就只使用這兩項工具來完成。

完整內容 >> https://bit.ly/3NvKtWS
Line 官方帳號,看最新技術文章:https://user137910.pse.is/aif2024ironman

參考資料
MLOps 工具介紹(一):常見的三種模型實驗管理工具 /mlops-model-management-tools/
Pachyderm Docs/Home/Latest/Get Started/First-Time Setup https://mldm.pachyderm.com/latest/get-started/first-time-setup/
Pachyderm Docs/Home/Latest/Learn/Intro to Pipelines https://docs.pachyderm.com/latest/learn/intro-pipelines/
用 MLDE 平台實作 PyTorch 卷積神經網路模型 /hpe-mlde-unboxing1/
Pachyderm Docs/Home/Latest/Integrate/JupyterLab https://docs.pachyderm.com/latest/integrate/jupyterlab-extension/
Pachyderm Docs/Home/Latest/Integrate/Determined https://docs.pachyderm.com/latest/integrate/determined/


上一篇
從「這次不會壞吧」到自動化的未來:13 以 HPE MLDM 實作 MLOps 資料版本控制 - 1
下一篇
從「這次不會壞吧」到自動化的未來:15 建模前,要思考的事
系列文
從「這次不會壞吧」到自動化的未來:從 DevOps 到 MLOps,改造模型佈署之旅22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言